package demo2;

/**
 * 具体图形：椭圆
 */
public class Ellipse extends Shape {
    // 椭圆核心参数（与坐标系无关，抽象层定义）
    private double p1, p2, p3, p4;

    /**
     * 构造器：根据坐标系类型传入对应参数
     * @param coordinateSystem 坐标系
     * @param params 椭圆参数（笛卡尔：x1,y1,x2,y2；极坐标：r1,θ1,r2,θ2）
     */
    public Ellipse(CoordinateSystem coordinateSystem, double... params) {
        super(coordinateSystem, "椭圆");
        if (params.length != 4) {
            throw new IllegalArgumentException("椭圆需4个参数");
        }
        this.p1 = params[0];
        this.p2 = params[1];
        this.p3 = params[2];
        this.p4 = params[3];
    }

    @Override
    public void draw() {
        // 桥接调用：椭圆的绘制委托给坐标系实现
        coordinateSystem.draw(shapeName, p1, p2, p3, p4);
    }
}
